home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / lang / PPCsmalltalk.lha / PPCSmallTalk / parser / y.tab.c < prev    next >
C/C++ Source or Header  |  1986-10-19  |  21KB  |  745 lines

  1. #define LITNUM 257
  2. #define LITFNUM 258
  3. #define LITCHAR 259
  4. #define LITSTR 260
  5. #define LITSYM 261
  6. #define CLASS 262
  7. #define ASSIGN 263
  8. #define BINARY 264
  9. #define PRIMITIVE 265
  10. #define PSEUDO 266
  11. #define UPPERCASEVAR 267
  12. #define LOWERCASEVAR 268
  13. #define COLONVAR 269
  14. #define KEYWORD 270
  15. #define LP 271
  16. #define RP 272
  17. #define LB 273
  18. #define RB 274
  19. #define PERIOD 275
  20. #define BAR 276
  21. #define MBAR 277
  22. #define SEMI 278
  23. #define UPARROW 279
  24. #define PS 280
  25. #define MINUS 281
  26. #define PE 282
  27.  
  28. #line 26 "parser.y"
  29. #include "env.h"
  30. #include "drive.h"
  31. #include "parser.h"
  32.  
  33. #line 31 "parser.y"
  34. typedef union {
  35.     struct litlist         *a;
  36.     struct blockstruct     *b;
  37.     char             *c;
  38.     struct exprstruct     *e;
  39.     int             i;
  40.     struct keylist         *k;
  41.     struct classstruct     *l;
  42.     struct methodstruct     *m;
  43.     struct objstruct     *o;
  44.     /* enum pseuvars */ int  p;
  45.     struct primlist     *r;
  46.     struct statestruct     *s;
  47.     struct litstruct     *t;
  48.     struct primstruct     *u;
  49.     } YYSTYPE;
  50.  
  51. #line 49 "parser.y"
  52. extern struct blockstruct *mkblock();
  53. extern struct classstruct *mkclass();
  54. extern struct varstruct *mkvar(), *addvlist(), *invlist();
  55. extern struct methodstruct *mkmethod();
  56. extern struct exprstruct *mkexpr(), *mkkey();
  57. extern struct keylist *mkklist();
  58. extern struct statestruct *mkstate();
  59. extern struct objstruct *mkobj();
  60. extern struct primstruct *mkprim();
  61. extern struct primlist *addprim();
  62. extern struct litstruct *mklit();
  63. extern struct litlist *addlit();
  64. extern char *bincat();
  65.  
  66. struct varstruct *instvars;
  67. struct varstruct *contextvars;
  68.  
  69. int bytetop = 0;
  70. uchar bytearray[1000];
  71.  
  72. YYSTYPE e;
  73. int errorcount = 0;
  74. #define yyclearin yychar = -1
  75. #define yyerrok yyerrflag = 0
  76. extern int yychar;
  77. extern short yyerrflag;
  78. #ifndef YYMAXDEPTH
  79. #define YYMAXDEPTH 150
  80. #endif
  81. YYSTYPE yylval, yyval;
  82. #define YYERRCODE 256
  83.  
  84. #line 348 "parser.y"
  85.  
  86. #include <stdio.h> 
  87.  
  88. char *filename;
  89. FILE *fp;
  90. FILE *ofd;
  91. FILE *fdout;    /* added WMK */
  92.  
  93. #include "lex.yy.c" 
  94.  
  95. main(argc, argv) 
  96. int argc;
  97. char **argv;
  98. {    
  99.     long status;
  100.     if (argc < 2) quiter("parser: wrong number of arguments");
  101.     filename = argv[1];
  102.     fp = fopen(filename, "r");
  103.     if (fp == NULL) {
  104.         yerr("cannot open input file %s", filename);
  105.         quiter("parser quits");
  106.         }
  107. /* added by WMK */
  108.     if (argc==3) {
  109.         ofd = fopen(argv[2],"w");
  110.         if (ofd==NULL) {
  111.             yerr("Cannot open output file %s", argv[2]);
  112.             quiter("parser quits");
  113.         }
  114.     }
  115.  
  116.     else ofd = stdout;
  117.     status = (long)yyparse();
  118.     if (argc==3) fclose(ofd);
  119.     exit(status);
  120. }
  121.  
  122. quiter(s) char *s; {
  123. /* WMK changed this--was fprintf(stderr..) */
  124.     printf("%s\n", s); exit(10);
  125. }
  126.  
  127. yywarn(s, v) char *s, *v; {
  128. /* WMK again */
  129.     printf("%s: line %d: Warning ", filename, linenum);
  130.     printf(s, v);
  131.     printf("\n");
  132. }
  133.  
  134. yyerror(s) char *s; {yerr(s, "");}
  135.  
  136. yerr(s, v) 
  137. char *s, *v; 
  138. {
  139. /* WMK changed */
  140.     printf("%s: line %d: ", filename, linenum);
  141.     printf(s, v);
  142.     printf("\n");
  143.     if (errorcount++ > 10) quiter("too many errors, goodby");
  144. }
  145.  
  146. expect(str) char *str;
  147. {    char buffer[100];
  148.  
  149.     sprintf(buffer,"Expected %%s found %s", yytext);
  150.     yerr(buffer, str);
  151. }
  152.  
  153. int yywrap() { return(1);}
  154.  
  155. char *alloc(size) int size;        /* allocate a block of storage */
  156. {  char *p, *malloc();
  157.  
  158.     p = malloc( (unsigned) size);
  159.     if (p == (char *) 0) yyerror("out of free space");
  160.     return(p);
  161. }
  162.  
  163. char *bincat(s1, s2)
  164. char *s1, *s2;
  165. {    char *p;
  166.  
  167.     p = alloc(strlen(s1) + strlen(s2) + 1);
  168.     strcpy(p, s1);
  169.     strcat(p, s2);
  170.     return(p);
  171. }
  172. short yyexca[] = {
  173.     -1, 1,
  174.     0, -1,
  175.     -2, 0,
  176.     };
  177. #define YYNPROD 119
  178. #define YYLAST 309
  179. short yyact[]={
  180.  
  181.   81,  79,  75,  76,  77, 127,  92,  25, 157, 141,
  182.  124, 123, 126, 125, 131, 156, 140, 155,  36,  26,
  183.  152,  37,  28, 130, 132,  29,  81,  79,  75,  76,
  184.   77, 127,  89,  25, 154, 149, 124, 123, 126, 125,
  185.  131, 120,  10, 119,  34,  26, 114,  40,  28, 130,
  186.  132,  29,  81,  79,  75,  76,  77,  15, 105,    9,
  187.   71,  65,  14, 116,  32,  33,  67, 146,  72, 107,
  188.  106,  35, 107,  43,  98,  78,  80, 147,  81,  79,
  189.   75,  76,  77,  15,  48,  42,  71,  65,  14,  54,
  190.   99,  84,  67,  91,  72, 143,  47, 109, 108, 102,
  191.  138,  78,  80,  81,  79,  75,  76,  77,  15,  13,
  192.    6,  71,  65,  14,  54,  15,   5,  67, 136,  72,
  193.   14,  69,  62, 101,  58,  52,  78,  80,  81,  79,
  194.   75,  76,  77,  15,  53,  60,  71,  65,  14,  54,
  195.   24,  51,  67,  93,  72,  81,  79,  75,  76,  77,
  196.   15,  78,  80,  71,  65,  14, 116,  31,  22,  67,
  197.   83,  72,  94,  17, 129,  45,  25, 142,  78,  80,
  198.   21,  20,  23,  25,  70,  41,  39,  25,  26,  95,
  199.    2,  28,   7,  27,  29,  26,  34,  90,  28,  26,
  200.   27,  29,  28,  34,  27,  29,  88,  46,  84,  44,
  201.   20,  49, 100,  96,  86,  87,  32,  33,  30,    4,
  202.   63,    8,   1,  32,  33,  12,  85,  66, 121,  64,
  203.  117, 139,  97, 122, 135, 134, 113,  50, 133,  16,
  204.  115, 112,   3, 118,  11,  19,  74, 103, 137, 144,
  205.  110,  82, 104, 111,  38,  61,  59,  57,  55,  56,
  206.   18,  73,  68, 145, 150,   0, 148,   0,   0,    0,
  207.    0,    0,   0,    0, 128,    0,   0, 122,   0,   0,
  208.  151,    0,   0, 153,   0,   0,   0,   0,   0,    0,
  209.    0,   0,   0,   0,   0,   0,   0,   0,   0,    0,
  210.    0,   0,   0,   0,   0,   0,   0,   0,   0,    0,
  211.    0,   0,   0,   0,   0,   0,   0,   0, 128 };
  212. short yypact[]={
  213.  
  214. -146,-146,-1000,-214,-147,-1000,-1000,-1000, -98,-1000,
  215. -1000,-212,-198,-1000,-1000,-1000,-256,-1000,-212,-223,
  216. -183,-1000,-1000,-183, -87,-1000,-1000,-1000,-1000,-1000,
  217. -1000,-172,-1000,-1000,-1000,-1000,-1000, -98,-154,-177,
  218. -183,-1000,-1000,-1000,-1000,-1000, -63,-1000,-1000,-1000,
  219. -243,-1000,-129,-1000,-170,-272,-1000,-1000, -91, -91,
  220. -194,-178,-1000,-1000,-1000,-1000,-1000,-129,-1000,-1000,
  221. -1000,-158,-211,-1000,-1000,-1000,-1000,-1000,-201,-1000,
  222. -160,-1000, -70,-1000,-1000,-1000,-1000,-1000,-1000,-154,
  223. -1000,-129,-1000,-224,-112,-112,-224,-112,-1000,-1000,
  224. -229,-231,-1000,-179,-260,-1000,-1000,-162,-1000,-1000,
  225. -1000,-1000,-1000,-1000,-112,-194,-1000, -87,-194,-1000,
  226. -1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
  227. -204,-1000,-160,-205,-239,-179,-1000,-255,-129,-1000,
  228. -1000,-1000,-240,-1000, -87,-257,-1000,-1000,-1000,-1000,
  229. -1000,-267,-1000,-1000,-1000,-1000,-1000,-1000 };
  230. short yypgo[]={
  231.  
  232.    0, 123, 252, 210, 162, 140, 251, 250, 249, 248,
  233.  124, 135, 247, 246, 245, 244, 242, 241, 237, 236,
  234.  235, 143, 234, 232, 163, 229, 122, 228, 227, 141,
  235.  134, 225, 224, 118, 221, 219, 121, 218, 217, 212,
  236.  180, 211, 209, 208, 157, 197, 196, 175, 160, 174,
  237.  167, 164 };
  238. short yyr1[]={
  239.  
  240.    0,  39,  39,  40,  41,  41,  23,  42,  42,  22,
  241.   22,  22,   3,   3,  43,  43,  45,  45,  45,  25,
  242.   25,  24,   7,    7,   7,    7,  20,  20,  47,  47,
  243.   15,  15,  44,  44,  44,  17,  17,  48,  28,  28,
  244.   46,  46,  29,  29,  30,  30,    9,   9,  12,  12,
  245.   13,  13,  14,  14,   8,   8,  21,  21,  10,  10,
  246.    4,   4,   5,   5,   5,   5,    5,  11,  11,  26,
  247.   26,  26,  26,  26,  26,  26,  38,  27,  27,   2,
  248.   18,  18,  16,  16,  31,  31,  33,  33,  34,  34,
  249.   32,  32,  35,  35,  49,  36,  36,  36,  36,  36,
  250.   36,    6,   6,  19,  19,  37,  37,  37,  37,  37,
  251.   37,  37,  37,  51,  51,   1,    1,  50,  50 };
  252. short yyr2[]={
  253.  
  254.    0,   1,   2,   4,   1,   1,   3,   1,   1,    1,
  255.    2,   1,   1,   1,   0,   3,   1,   2,   1,   1,
  256.    3,   4,   1,   2,   1,   1,   2,   3,   1,    1,
  257.    0,   3,   1,   1,   1,   1,   2,   1,   1,    3,
  258.    0,   1,   2,   1,   3,   1,   1,   1,   1,    2,
  259.    1,   3,   2,   2,   1,   2,   2,   3,   1,    3,
  260.    1,   2,   1,   1,   1,   1,   1,   1,   2,    1,
  261.    1,   1,   1,   1,   3,   1,   4,   0,   2,    4,
  262.    0,   2,   1,   2,   2,   1,   2,   1,   0,    1,
  263.    2,   3,   1,   3,   2,   1,   1,   1,   1,    1,
  264.    4,   1,   2,   1,   2,   1,   1,   1,   1,    1,
  265.    1,   1,   3,   2,   1,   0,   2,   1,   2 };
  266. short yychk[]={
  267.  
  268. -1000, -39, -40, -23, -42, 262, 256, -40, -41, 273,
  269.  256, -22,  -3, 256, 267, 262, -25, -24,  -7, -20,
  270.   -4, 268, 256, 270,  -5, 264, 276, 281, 279, 282,
  271.  -43, -44, 276, 277, 256, 269, 274, 277, -15, -44,
  272.  270, -47, 268, 256, -47,  -5, -45, 268, 256, -24,
  273.  -28, -29, 279, -30, 268,  -9,  -8, -12, -10, -13,
  274.  -11, -14, -26,  -3, -35, 266, -38, 271,  -2, -36,
  275.  -49, 265, 273,  -6, -19, 259, 260, 261, 280, 258,
  276.  281, 257, -17, -48, 268, -47, -44, 268, -46, 275,
  277.  -30, 263, 278, -21,  -4, 270, -21,  -4, 268, 268,
  278.  -30,  -1, 257, -18, -16, 269, 271, 273, 258, 257,
  279.  -44, -48, -29, -30, 270, -11, 268, -10, -11, 272,
  280.  272, -37, -36, 268, 267, 270, 269, 262,  -4, -51,
  281.  280, 271, 281, -27, -31, -32, -33, -30, 279, -34,
  282.  276, 269, -50, 257, -10,  -1, 271, 282, -26,